iT邦幫忙

0

k8s elk 架設elastalert - 對slack發出及時的警報系統

  • 分享至 

  • xImage
  •  

【YC的尋路青春】

架設好elk之後,除了kibana可以看以外 想要做及時的警報系統
我們這邊選擇用slack(也有很多的選擇啦 寄信、Post、TG等等)

這邊的namespace用得是yc-log 記得改成想要的形狀 (沒改過就是default)

我們先新增兩個config檔案
這個主要是修改他的查詢頻率

kind: ConfigMap
apiVersion: v1
metadata:
  name: elastalert-config
  namespace: yc-log
data:
  elastalert_config: |-
    ---
    rules_folder: /opt/rules       
    scan_subdirectories: false
    run_every:                     # 查詢頻率
      minutes: 1
    buffer_time:
      minutes: 15
    es_host: elk-elasticsearch.yc-log.svc.cluster.local  #1
    es_port: 80 #2
    writeback_index: elastalert
    use_ssl: False
    verify_certs: True
    alert_time_limit:             
      minutes: 2880

#1 這邊請填自己的elasticsearch 大概會長這樣 elk-elasticsearch.yc-log.svc.cluster.local
#2 port號記得改

新增第二個config
這個主要是修改規則

kind: ConfigMap
apiVersion: v1
metadata:
  name: elastalert-rules
  namespace: yc-log
data:
  rule_config.yaml: |-
    name: yc-error  #1     
    es_host: elk-elasticsearch.yc-log.svc.cluster.local
    es_port: 80

    type: any
    index: yc-test-*              #2

    filter:
    - query:
        query_string:
          query: "LOGLEVEL:ERROR"  #3

    alert:
     - "slack" 
     
    slack_webhook_url: 
     "https://hooks.slack.com/services/T1PH69YNN/B022L09HU3B/ycisgoodguy" #4

#1 這邊會是到時候寄信時的一個token
#2 這邊是你想要監控的index
#2.1 如果你想要監控多個從kibana來的index , 就應該寫index: 'yc-test-','yc2-test-'
#3 這邊記得改成你想要過濾的內容 請進kibana好好看一下 我這邊寫的是如果我的LOGLEVEL這個type是ERROR的 進行警報
#4 這邊填slack機器人的url 文章後面補充

最後就是Deployment了,用volumes把這兩個config檔案丟到該丟的位置

kind: Deployment
apiVersion: apps/v1
metadata:
  name: elastalert
  namespace: yc-log
spec:
  replicas: 1
  selector:
    matchLabels:
      app: elastalert
  template:
    metadata:
      labels:
        app: elastalert
    spec:
      volumes:
        - name: rules
          configMap:
            name: elastalert-rules-test
            defaultMode: 420
        - name: config
          configMap:
            name: elastalert-config
            items:
              - key: elastalert_config
                path: elastalert_config.yaml
            defaultMode: 420
      containers:
        - name: elastalert
          image: 'jertel/elastalert-docker:0.2.4'
          resources:
            limits:
              cpu: 50m
              memory: 256Mi
            requests:
              cpu: 50m
              memory: 256Mi
          volumeMounts:
            - name: config
              mountPath: /opt/config
            - name: rules
              mountPath: /opt/rules

就完成啦 記得去
kubectl logs elastalert-ycycycycyc -n yc-log
看一下有沒有啥問題

之後再補一篇 如何方便test的方法


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
smallwhitetw
iT邦新手 5 級 ‧ 2021-07-01 22:56:46

版主牛逼,一點精美的圖片,一小段簡潔的說明,即可讓人融會貫通。你是鬼吧

我要留言

立即登入留言